package com.lwl.blue.commont.utils;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;

/**
 * <p> MD5加密工具类 </p>
 *
 * @Date: 2021/11/2 17:29
 * @version: V1.0
 * @Decription:
 * @author: 蓝文良
 */
public class MD5Utils {
    /**
     * md5加密
     * @param str 需要加密的字符串
     * @return 加密后的Base64字符串
     * @throws NoSuchAlgorithmException
     * @throws UnsupportedEncodingException
     */
    public static String EncoderByMd5(String str) throws NoSuchAlgorithmException, UnsupportedEncodingException {
        MessageDigest md5 = MessageDigest.getInstance("MD5");
        // 使用Java标准库的Base64编码器替代sun.misc.BASE64Encoder
        return Base64.getEncoder().encodeToString(md5.digest(str.getBytes("utf-8")));
    }

    /**
     * 添加一个重载方法，使用默认字符集(UTF-8)并处理异常
     * @param str 需要加密的字符串
     * @return 加密后的Base64字符串，如果出错返回null
     */
    public static String encodeByMd5(String str) {
        try {
            return EncoderByMd5(str);
        } catch (NoSuchAlgorithmException | UnsupportedEncodingException e) {
            e.printStackTrace();
            return null;
        }
    }
}